home *** CD-ROM | disk | FTP | other *** search
/ Inside Mac Games Volume 5 #8 / IMG 51 Vol 5-8.iso / Essentials / TCPSerial 1.0.1 / TCP / TCP next >
Text File  |  1996-05-31  |  2KB  |  125 lines

  1. ! "MacTCP Serial driver"
  2. @ORIGINATE
  3. @ANSWER
  4. !
  5. @LABEL 1
  6. serreset 57600, 0, 8, 1
  7. setspeed 9600
  8. hsreset 0 0 0 0 0 0
  9. !
  10. ! The TCP driver is designed to do everything based on one command.  This is 
  11. ! necessary since commands are executed only at tasks time, and when ARA is 
  12. ! setting up to answer calls during boot, there may be a very long delay before
  13. ! there is any task time.  Hence we issue the one command and wait forever.
  14. !
  15. ifANSWER 30
  16. note "Connecting to ^1" 3
  17. !
  18. write "AT*D 'Port 3454' '^1'\13"
  19. matchstr 1 11 "CONNECT\13\10"
  20. matchstr 2 50 "NO CARRIER\13\10"
  21. matchstr 3 50 "ERROR\13\10"
  22. matchstr 4 52 "NO DIALTONE\13\10"
  23. matchstr 5 53 "BUSY\13\10"
  24. matchstr 6 54 "NO ANSWER\13\10"
  25. matchread 1200
  26. jump 59
  27. !
  28. @LABEL 11
  29. note "Communicating via TCP." 3
  30. ! Note that we are doing error correction (since TCP is a reliable protocol)
  31. userhook 2
  32. ifstr 6 15 "0"
  33. ! Turn off compression.  We use the "Ignore Dialtone" flag to control this.  It's a kluge,
  34. ! but they don't give me anything else I can use.
  35. note "ARA data compression turned off" 1
  36. userhook 3
  37. jump 15
  38. !
  39. @LABEL 15
  40. ifANSWER 16
  41. pause 10
  42. exit 0
  43. !
  44. @LABEL 16
  45.  
  46. @LABEL 17
  47. exit 0
  48. !
  49. ! @ANSWER
  50. ! Set up the modem to answer
  51. @LABEL 30
  52. write "AT*D 'Port 3454' ''\13"
  53. !
  54. @LABEL 31
  55. matchstr 1  32 "RING\13\10"
  56. matchstr 2  11 "CONNECT\13\10"
  57. matchstr 3  50 "NO CARRIER\13\10"
  58. matchstr 4  50 "ERROR\13\10"
  59. matchstr 5  52 "NO DIALTONE\13\10"
  60. matchstr 6  53 "BUSY\13\10"
  61. matchstr 7  54 "NO ANSWER\13\10"
  62. matchread 6000
  63. jump 31
  64. !
  65. @LABEL 32
  66. userhook 1
  67. note "Answering phone…" 2
  68. jump 31
  69. !
  70. ! 50: error messages
  71. !
  72. @LABEL 50
  73. exit -6021
  74. !
  75. @LABEL 52
  76. exit -6020
  77. !
  78. @LABEL 53
  79. exit -6022
  80. !
  81. @LABEL 54
  82. exit -6023
  83. !
  84. @LABEL 59
  85. exit -6019
  86. !
  87. ! Hang up the modem
  88. !
  89. @HANGUP
  90. @LABEL 60
  91. !
  92. ! First reset DTR briefly to get the driver to close the connection and go into 
  93. ! command mode.  The first ATH below will wait for the close to complete before returning
  94. ! the "OK" response if this works.
  95. !
  96. DTRClear
  97. Pause 1
  98. DTRSet
  99. Pause 1
  100. !
  101. ! Try an ATH command.  This will wait for the TCPClose from the DTRClear above to finish.
  102. ! If it doesn't ever finish, we'll do an ATZ which will call TCPAbort.
  103. !
  104. write "ATH\13"
  105. matchclr
  106. matchstr 1 64 "OK\13\10"
  107. matchstr 2 59 "ERROR\13\10"
  108. matchread 130
  109. !
  110. ! ATH finished or didn't work, try ATZ which will do a TCPAbort if the connection is still  
  111. ! open.  This should clean things up.
  112. !
  113. @LABEL 64
  114. write "ATZ\13"
  115. matchclr
  116. matchstr 1 63 "OK\13\10"
  117. matchstr 2 59 "ERROR\13\10"
  118. matchread 60
  119. jump 59
  120. !
  121. @LABEL 63
  122. !
  123. exit 0
  124.  
  125.